Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

299
Views
"Error de segmentación" cuando `rmmod` o `modprobe -r`

Probar el módulo de kernel más simple de LDD3 sin ninguna modificación en el kernel personalizado v4.1.0-rc6 para la placa Beagle Bone con BusyBox v1.23.0. El código del módulo es el siguiente:

 #include <linux/init.h> #include <linux/module.h> MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void) { printk(KERN_ALERT "Hello, world\n"); return 0; } static void hello_exit(void) { printk(KERN_ALERT "Goodbye, cruel world\n"); } module_init(hello_init); module_exit(hello_exit);

El archivo Make es:

 ARCH := arm CROSS_COMPILE := arm-cortex_a8-linux-gnueabi- obj-m := hello.o all: make ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C /path/to/linux/source/tree M=$(PWD) modules clean: make ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C /path/to/linux/source/tree M=$(PWD) clean

El módulo se está compilando e instalando en rootfs sin problemas. también está cargando:

 $ insmod hello.ko [ 30.692404] Hello, world

Pero al intentar eliminarlo, me sale:

 $ rmmod hello.ko Segmentation fault $modprobe -r hello.ko Segmentation fault $ lsmod hello 813 0 - Live 0xbf000000 (O)

El kernel está compilado con el soporte de descarga de módulos (tanto regular como forzado) habilitado.

¿Cuál puede ser la posible causa de este problema? ¿Cuál es la forma de abordar la investigación de la misma?

Actualizar:

Como se sugiere en los comentarios, he intentado incluir linux/kernel.h , definiendo los símbolos MODULE , LINUX y __KERNEL__ . Se agregaron los prefijos __init y __exit a las funciones. Se eliminaron los modificadores static . Se eliminaron las líneas de printk . El resultado el mismo. dmesg muestra solo el saludo inicial. Sorprendentemente, la carga y descarga de los módulos del kernel, como gpio_keys o crypto/ccm , funciona. Entonces, lo único que queda por sospechar es la forma en que se compila el módulo.

Actualización 2
Actualizar el kernel a la instantánea más reciente no ayudó. Compilado el módulo con diferentes configuraciones de optimización no ayudó. El siguiente paso, supongo, voy a modificar el rmmod de BusyBox para tener alguna indicación de la ubicación del problema.

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Echa un vistazo a estos tutoriales:

http://www.tldp.org/HOWTO/Module-HOWTO/x839.html http://www.tldp.org/LDP/lkmpg/2.4/html/x281.htm

Intenta agregar:

 #define MODULE #define LINUX #define __KERNEL__ #include <linux/kernel.h> /* Needed for KERN_ALERT */
over 4 years ago · Santiago Trujillo Report

0

Me las he arreglado para solucionar este problema. Usando strace , descubrí que la falla de segmento está ocurriendo en algún lugar al read el archivo modules.dep.bb específico de BusyBox . BusyBox utiliza este archivo cuando se compila con la opción "Modutils simplificados" ( CONFIG_MODPROBE_SMALL ). Al deshabilitar la opción, seleccionar las utilidades que se instalarán y reconstruir BusybBox, obtuve el trabajo de descarga del módulo. Creo que la raíz del problema está cerca del hecho de que el módulo de prueba se compila y almacena fuera del directorio /lib/..../modules , por lo que la modutils busybox se está confundiendo.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!